/**
 * 报考志愿
 */
var WishReport = {
};


/**
 * 初始化学校选择框
 * @param batchType 批次类型
 */
WishReport.initEnrollSchoolSelect = function (schoolDomId, batchType) {
    $("#" + schoolDomId).select2({
        language: "zh-CN"
        , width: "100%"
        , placeholder: ''
        , allowClear: true
        , ajax: {
            type: "post",
            cache: true,
            delay: 1000,
            url: Feng.ctxPath + "/enrollSchool/listEnrollSchoolForSelect2",
            data: function (params) {
                var param = {};
                param.batchType = batchType;
                param.enrollSchoolName = params.term;
                param.limit = 10;
                param.offset = params.page != null ? ((params.page - 1) * 10) : 0;
                return param;
            }
        }
    });
    //添加选择事件，需要按顺序填报志愿
    $("#" + schoolDomId).on('change', function (e) {
        //循环查询当前批次其他学校是否选择
        var i = 1;//循环志愿学校序号
        var checkFlag = true;//上一级学校是否选择标志
        while ($("#batch" + batchType + "_school" + i).length > 0) {
            $("#batch" + batchType + "_school" + i).parent().find(".orderErrorMsg").remove();
            //当不是该批次第一个选项，上一个选项未选，并且当前选项有值时。显示提示
            if (i != 1 && !checkFlag && $("#batch" + batchType + "_school" + i).select2("val") != null) {
                $("#batch" + batchType + "_school" + i).parent().append($(".orderErrorMsg:hidden").clone().show());
            }
            checkFlag = checkFlag && ($("#batch" + batchType + "_school" + i).select2("val") != null);
            i++;
        }
    });

};

/**
 * 初始化专业选择框
 * @param batchType 批次类型
 * "batch" + batchNum + "_school" + schoolNum + "_major" + majorNum, "batch" + batchNum + "_school" + schoolNum
 */
WishReport.initEnrollMajorSelect = function (majorId, schoolDomId ,batchNum) {
    $("#" + majorId).select2({
        language: "zh-CN"
        , width: "100%"
        , allowClear: true
        , placeholder: '选择专业前请先选择报考学校'
        , ajax: {
            type: "post",
            cache: true,
            delay: 1000,
            // url: Feng.ctxPath + "/enrollSchoolBatchMajor/listEnrollMajorForSelect2",
            url: Feng.ctxPath + "/enrollSchoolBatchMajor/listEnrollMajorForSelect22",
            data: function (params) {
                var param = {};
                param.enrollSchoolId = $("#" + schoolDomId).select2("val");
                param.batchNum = batchNum ;   //新加
                param.majorName = params.term;
                param.limit = 10;
                param.offset = params.page != null ? ((params.page - 1) * 10) : 0;
                return param ;
            }
        }
    });

    //添加选择事件，需要按顺序填报志愿
    $("#" + majorId).on('change', function (e) {
        var i = 1;//志愿专业序号
        var checkFlag = true;//上一级专业是否选择标志
        while ($("#" + schoolDomId + "_major" + i).length > 0) {
            $("#" + schoolDomId + "_major" + i).parent().find(".orderErrorMsg").remove();
            //当不是该批次第一个选项，之前有选项未选，并且当前选项有值时。显示提示
            if (i != 1 && !checkFlag && $("#" + schoolDomId + "_major" + i).select2("val") != null) {
                $("#" + schoolDomId + "_major" + i).parent().append($(".orderErrorMsg:hidden").clone().show());
            }
            checkFlag = checkFlag && $("#" + schoolDomId + "_major" + i).select2("val") != null;
            i++;
        }
    });

    //绑定报考学校选择框变更事件
    $("#" + schoolDomId).on('change', function (e) {
        $("#" + majorId).val(null).trigger("change");
        //选择了学校，服从专业选项才能开启
        if ($("#" + schoolDomId).select2("val") != null) {
            $("#" + schoolDomId + "_major_allocate").removeAttr("disabled");
        } else {
            $("#" + schoolDomId + "_major_allocate").prop("disabled", "disabled");
            $("#" + schoolDomId + "_major_allocate").removeAttr("checked");
        }
    });
};

/**
 * 初始化选择框
 */
WishReport.init = function () {
    //初始化学校选择框
    //批次序号
    var batchNum = 1;
    //学校序号
    var schoolNum = 1;
    //专业序号
    var majorNum = 1;
    //当每个批次的第一个学校存在，该批次就存在，进行相关学校选择框的
    while ($("#batch" + batchNum + "_school1").length > 0) {
        //循环学校选择框
        while ($("#batch" + batchNum + "_school" + schoolNum).length > 0) {
            WishReport.initEnrollSchoolSelect("batch" + batchNum + "_school" + schoolNum, batchNum);
            //循环专业选择框
            while ($("#batch" + batchNum + "_school" + schoolNum + "_major" + majorNum).length > 0) {
                // WishReport.initEnrollMajorSelect("batch" + batchNum + "_school" + schoolNum + "_major" + majorNum, "batch" + batchNum + "_school" + schoolNum);
                WishReport.initEnrollMajorSelect("batch" + batchNum + "_school" + schoolNum + "_major" + majorNum, "batch" + batchNum + "_school" + schoolNum , batchNum);
                majorNum++;
            }
            //初始化服从志愿调配checkbox是否可选(选择了学校才可以选)
            if ($("#" + "batch" + batchNum + "_school" + schoolNum).select2("val") == null
                && $("#" + "batch" + batchNum + "_school" + schoolNum + "_major_allocate").length>0) {
                $("#" + "batch" + batchNum + "_school" + schoolNum + "_major_allocate").prop("disabled", "disabled");
                $("#" + "batch" + batchNum + "_school" + schoolNum + "_major_allocate").removeAttr("checked");
            }
            majorNum = 1;
            schoolNum++;
        }
        schoolNum = 1;
        batchNum++;
    }
};

/**
 * 提交
 */
WishReport.submit = function () {
    layer.confirm('是否确认提交志愿？提交之后可返回修改', {
        btn: ['确认', '取消']
        //按钮
    }, function () {
        if ($(".orderErrorMsg:visible").length > 0) {
            Feng.error("存在未按顺序填报的志愿，请检查后重新提交！");
            return;
        }
        var checkFlag = true;//判断选择的志愿信息是否满足要求
        var data = [];
        data["id"] = $("#seniorWishId").val();
        //循环
        $(".check_batch_quit").each(function (i) {
            //设置是否退出批次标志
            data[Feng.underLineToCamel($(this).attr("id")) + "Flag"] = $(this).is(':checked') ? 1 : 0;
            //当不退出时，设置其他数据
            if (!$(this).is(':checked')) {
                var schoolCheckFlag = false;//设置当前批次下是否选择学校
                //循环设置的学校id
                $(this).parent().next("table").find(".select_school").each(function (i) {
                    data[Feng.underLineToCamel($(this).attr("id")) + "Id"] = $(this).select2("val");
                    if ($(this).select2("val") != null) {
                        schoolCheckFlag = schoolCheckFlag || true;
                    }
                });
                //判断该批次是否没有选择学校
                if (!schoolCheckFlag) {
                    checkFlag = false;
                    Feng.error($(this).prev("span").html() + "批次未放弃，但是没有选择报考学校！");
                    return false;
                }
                //循环设置专业id
                var majorCheckFlag = true;//设置当前批次下是否选择专业
                $(this).parent().next("table").find(".select_major").each(function (i) {
                    data[Feng.underLineToCamel($(this).attr("id")) + "Id"] = $(this).select2("val");
                    //如果当前设置的专业序号为1，判断对应的学校是否选择，如果选择了。但是专业未选，认为输入非法
                    var idAttr  =$(this).attr("id");
                    var majorNum = idAttr.substring(idAttr.indexOf("major")+5);
                    var schoolDomId = idAttr.substring(0,idAttr.indexOf("major")-1);
                    if(majorNum=="1"
                        &&$("#"+schoolDomId).select2("val")!=null&&$(this).select2("val")==null){
                        majorCheckFlag=false;
                        return false;
                    }
                });
                //判断该批次是否没有选择学校
                if (!majorCheckFlag) {
                    checkFlag = false;
                    Feng.error($(this).prev("span").html() + "批次中，选择了学校至少要选择一个专业");
                    return false;
                }
                //循环设置服从专业调配标记
                $(this).parent().next("table").find(".check_major_allocate").each(function (i) {
                    data[Feng.underLineToCamel($(this).attr("id")) + "Flag"] = $(this).is(':checked') ? 1 : 0;
                });
                //循环设置服从学校调配标记
                $(this).parent().next("table").find(".check_school_allocate").each(function (i) {
                    data[Feng.underLineToCamel($(this).attr("id")) + "Flag"] = $(this).is(':checked') ? 1 : 0;
                });
                //判断该批次中是否有选择了学校，但是没有选择专业
                if (!schoolCheckFlag) {
                    checkFlag = false;
                    Feng.error($(this).prev("span").html() + "批次未放弃，但是没有选择报考学校！");
                    return false;
                }
            }
        });
        if (!checkFlag) {
            return;
        }
        var ajax = new $ax(Feng.ctxPath + "/portal/reportWish", function (data) {
            layer.confirm('提交成功，点击确认跳转查看志愿界面', {
                btn: ['确认']
            }, function () {
                //跳转到查看志愿
                location.href = Feng.ctxPath + "/portal/checkWish";
            });
        }, function (data) {
            Feng.error("提交失败! " + data.responseJSON.message + "!");
        });
        ajax.set(data);
        ajax.start();
    }, function () {
        layer.closeAll()
    });
};


/**
 * 检查是否退出该批次
 * @param checkBox
 */
$(".check_batch_quit").change(function () {
    //判断是否选中退出批次
    var isCheck = $(this).is(':checked');
    //清空该批次中所有选择框的选项
    $(this).parent().next("table").find("select").each(function (i) {
        if (isCheck) {
            $(this).val(null).trigger("change");
        }
        $(this).prop("disabled", isCheck);
    });
    $(this).parent().next("table").find("input").each(function (i) {
        //如果是服从状态安排的选择框，只需要禁用
        if (isCheck) {
            $(this).prop("checked", false);
            $(this).prop("disabled", true);
        }
        //如果是服从学校安排的选择框，和批次退出同状态
        if($(this).hasClass("check_school_allocate")){
            $(this).prop("disabled", isCheck);
        }
    });
});

$(function () {
    //先调用放弃批次点击事件，防止init方法设置的input状态被放弃批次操作覆盖
    $(".check_batch_quit").trigger("change");
    WishReport.init();
});

